<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        //工厂模式
        /*
        function createPerson(name, age) {
            var o = new Object();
            o.name = name;
            o.age = age;
            o.sayName = function () {
                alert(this.name);
            };
            return o;
        }
        var p=createPerson("abc",12);
        */
        //alert(p.name+"-->"+p.age);
        //构造模式
        function Person(name, age) {
            this.name = name;
            this.age = age;
            this.sayName = function () {
                alert(this.name);
            };
            //return this;
        }
        var p=new Person("laoyang",18);

        console.log(p.constructor == Person);
        console.log(p instanceof Object);  // true
        console.log(p instanceof Person);  // true
        function see() {
          //  return undefined;
        }
        console.log(see())
        //  p.sayName()

        Person('Morty', 14);  // 添加到window全局变量对象上,变量提升
        console.log(window.age)
        window.sayName(); // Morty
        // 在另一个对象的作用域中调用
        var o = {};
        Person.call(o, 'Jerry', 35);//call（在哪个对象的作用域下，（参数，参数））this.指向了o
        o.sayName();  // Jerry
        alert(o.age);
    </script>
</head>
<body>
    使用工厂模式和构造模式创建对象
</body>
</html>